#ifndef DATA_CAMERA_H
#define DATA_CAMERA_H

#include "Common/Algebra/Transform.h"

namespace data {

	class Camera {
	public:
		Camera(
			const cmn::Transform& position,
			const cmn::Transform& velocity ) :
			m_position( position ),
			m_velocity( velocity )
		{}

		Camera( const Camera& camera ) :
			m_position( camera.GetPosition() ),
			m_velocity( camera.GetVelocity() )
		{}

		inline const cmn::Transform GetPosition() const { return m_position; }
		inline void SetPosition( const cmn::Transform& position ) { m_position = position; }

		inline const cmn::Transform GetVelocity() const { return m_velocity; }
		inline void SetVelocity( const cmn::Transform& velocity ) { m_velocity = velocity; }

	private:
		cmn::Transform m_position;
		cmn::Transform m_velocity;
	};

	inline bool operator == ( const Camera& a, const Camera& b ) {
		if( a.GetPosition() != b.GetPosition() ) return false;
		if( a.GetVelocity() != b.GetVelocity() ) return false;
		return true;
	}

	inline bool operator != ( const Camera& a, const Camera& b ) {
		return !( a == b );
	}
}
#endif
